#include <stdio.h>    // 提供输入输出函数，如 printf、scanf
#include <string.h>   // 提供字符串处理函数，如 strlen、strcmp 等

int main() {
    // step 1# 读取输入字符串
    char string[1000];               // 用于存储输入的字符串
    scanf("%s", string);             // 读取字符串（无空格）
    getchar();                       // 吸收多余的换行符

    // step 2# 初始化记录最小字符及其相关信息
    char minChar = 'z' + 1;          // 当前最小字符，初始为比 'z' 大的字符
    int lastMinChIndex = -1;         // 最后一个最小字符的位置
    int firstIndex = -1;             // 第一个非最小字符的位置
    int minCharCount = 0;            // 最小字符出现的次数
    int minCharPos[1000];            // 记录所有最小字符的位置

    // step 3# 遍历字符串，找出最小字符及其所有出现位置
    for (int i = 0; string[i]; i++) {
        if (string[i] < minChar) {               // 发现更小的字符
            minCharCount = 0;                    // 重置最小字符计数
            minChar = string[i];                 // 更新最小字符
            minCharPos[minCharCount++] = i;      // 记录当前位置
        } else if (string[i] == minChar) {       // 与当前最小字符相等
            minCharPos[minCharCount++] = i;      // 继续记录位置
        }
    }

    // step 4# 找到第一个不是最小字符的位置
    for (int i = 0; string[i]; i++) {
        if (string[i] != minChar) {
            firstIndex = i;                      // 记录第一个非最小字符的位置
            break;
        }
    }

    // step 5# 交换第一个非最小字符和最后一个最小字符的位置（如有必要）
    // note 1# 如果没有非最小字符，或位置已符合规则，不做交换
    if (firstIndex < minCharPos[minCharCount - 1] && firstIndex != -1) {
        lastMinChIndex = minCharPos[minCharCount - 1]; // 取最后一个最小字符位置
        char tmp = string[lastMinChIndex];             // 交换字符
        string[lastMinChIndex] = string[firstIndex];
        string[firstIndex] = tmp;
    }

    // step 6# 输出交换后的结果字符串
    printf("%s\n", string);   // 输出结果字符串
    return 0;
}
